package 算法模板;

import java.util.Arrays;

/**
 * 第一次从待排序的数据元素中选出最小（或最大）的一个元素，存放在序列的起
 * 始位置，然后再从剩余的未排序元素中寻找到最小（大）元素，然后放到已排序
 * 的序列的末尾。以此类推，直到全部待排序的数据元素的个数为零。选择排序是
 * 不稳定的排序方法。（选择排序是交换次数最少的排序！！！）
 * <p>
 * 来源：百度百科
 */
public class 选择排序 {

    public static void main(String[] args) {

        int[] nums = {2, 45, 2, 5, 2, 6, -1, 8, 9, 44};
        selectSort(nums);
        System.out.println(Arrays.toString(nums));

    }

    public static void selectSort(int[] nums) {
        for (int i = 0; i < nums.length; i++) {
            int min = i;
            //找到最小值
            for (int j = nums.length - 1; j > i; j--) {
                if (nums[j] < nums[min]) {
                    min = j;
                }
            }
            //交换位置
            swaq(nums, i, min);
        }
    }

    public static void swaq(int[] nums, int a, int b) {
        //需要一个临时变量
        int temp = nums[a];
        nums[a] = nums[b];
        nums[b] = temp;
    }

}
